226.翻转二叉树(递归/Java) 您所在的位置:网站首页 二叉树反转 java 226.翻转二叉树(递归/Java)

226.翻转二叉树(递归/Java)

2024-06-09 19:04| 来源: 网络整理| 查看: 265

226.翻转二叉树

image-20231019095440635

题目简述:

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

题目思路:

1.由题意可知,翻转二叉树实际是将每一个节点的孩子交换位置

2.如果这个节点的孩子均不存在,则说明二叉树翻转完成(若仅存在一个孩子,仍可以翻转,即交换左右孩子)

4.根节点不需要翻转,但要保持根节点的位置不动

5.通过上述步骤可以看到,翻转的所有操作都可归结到一个节点的相关操作,所以可以采用递归的思路

Java代码实现:

public TreeNode invertTree(TreeNode root) { invertNode(root); return root; } private void invertNode(TreeNode node) { //如果左右孩子均不存在返回 if (node != null) return; //将左右孩子进行翻转 TreeNode temp = node.right; node.right = node.left; node.left = temp; //对节点的左孩子进行操作 invertNode(node.left); //对节点的右孩子进行操作 invertNode(node.right); } 易错点

当仅判断左右孩子是否为空作为递归条件时,很多同学通过

if(node.left == null && node.right == null) return;

作为判断结束递归的条件,但当node本身为空时,这会造成空指针,所以当判断左右孩子为空时,可以采用

if(node == null) return;

作为返回条件,这样可以有效规避空指针的产生



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有